package mf.com.config;

import jakarta.annotation.Resource;
import mf.com.interceptor.LoginAuthInterceptor;
import mf.com.properties.UserProperties;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @Author: lmf
 * @Create: 2024/3/23 22:30
 * Description:  允许跨域配置
 */
@Component // 用于定义一个类作为Spring容器管理的bean 它会自动检测所有带有@Component注解的类
public class WebMvcConfiguration implements WebMvcConfigurer {
    @Resource
    private LoginAuthInterceptor loginAuthInterceptor;
    @Resource
    private UserProperties userProperties;

    @Override
    public void addInterceptors(org.springframework.web.servlet.config.annotation.InterceptorRegistry registry) {
        registry.addInterceptor(loginAuthInterceptor)
                // 添加不需要拦截的白名单路径，即这些路径的请求不会被拦截器处理
//                .addPathPatterns("/admin/system/index/login", "/admin/system/index/generateValidateCode")
                // 修改为从配置文件中获取对应白名单
                .excludePathPatterns(userProperties.getNoAuthUrls())
                // 添加需要拦截的路径模式，即除了白名单之外的其他所有路径都会被拦截器处理
                // "/**"表示拦截所有子路径，包括根路径和其他所有子目录
                .addPathPatterns("/**");
    }


    //允许跨域
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")      // 添加路径规则(全部允许)
                .allowCredentials(true)               // 是否允许在跨域的情况下传递Cookie
                .allowedOriginPatterns("*")           // 允许请求来源的域规则
                .allowedMethods("*")
                .allowedHeaders("*");
    }



}
